查看原文
其他

7天期限已过,谷歌披露已遭利用的 Windows 内核 0day 详情

综合编译 代码卫士 2022-04-06
 聚焦源代码安全,网罗国内外最新资讯!
编译:奇安信代码卫士团队



上周五,谷歌安全研究员发现了已遭在野利用的一个 Windows 0day。谷歌 Project Zero 团队主管 Ben Hawkes 表示,该 0day 本应在微软的下个补丁星期二(北京时间10月11日)修复。


Hawkes 表示,该 Windows 0day (CVE-2020-17087) 是攻击链的一部分(two-punch attack),后者还包括上上周披露的一个 Chrome 0day (CVE-2020-15999)。


Chrome 0day 可导致攻击者在 Chrome 浏览器中执行恶意代码,而 Windows 0day 是攻击的第二步,可导致攻击者逃逸 Chrome 的安全容器并在底层操作系统上运行代码,即沙箱逃逸。

谷歌 Project Zero 在上上周给出微软7天的补丁期限,但微软未能按时推出,因此谷歌选择公开该漏洞的详情。


CVE-2020-17087 详情


谷歌在博客文章中指出,Windows 内核加密驱动(Windows Kernel Cryptography Driver (cng.sys) ) 将一台 \Device\CNG 设备暴露给用户态程序,并支持具有复杂输入结构的多种 IOCTL。它构成了可本地访问的攻击面,可被用于实现提权(如沙箱逃逸)。

研究人员在 IOCTL 0x390400 的处理过程中发现了一个0day,可通过如下调用系列触发:

1. cng!CngDispatch
2. cng!CngDeviceControl
3. cng!ConfigIoHandler_Safeguarded
4. cng!ConfigFunctionIoHandler
5. cng!_ConfigurationFunctionIoHandler
6. cng!BCryptSetContextFunctionProperty
7. cng!CfgAdtReportFunctionPropertyOperation
8. cng!CfgAdtpFormatPropertyBlock

该 bug 存在于cng!CfgAdtpFormatPropertyBlock 函数中,是由一个16位的整数截断问题造成。通过该函数的类似于C语言的伪代码很好地解释了该 bug:

1: NTSTATUS CfgAdtpFormatPropertyBlock(PBYTE SourceBuffer, USHORT SourceLength, PUNICODE_STRING Destination) { 2: CONST USHORT DestinationSize = (USHORT)(6 * SourceLength); 3: PWCHAR OutputBuffer = BCryptAlloc(DestinationSize); 4: 5: for (USHORT i = 0; i < SourceLength; i++) { 6: *OutputBuffer++ = "0123456789abcdef"[*SourceBuffer >> 4]; 7: *OutputBuffer++ = "0123456789abcdef"[*SourceBuffer & 0xF]; 8: *OutputBuffer++ = ' '; 9: SourceBuffer++;10: }11: 12: Destination->MaximumLength = DestinationSize;13: Destination->Length = DestinationSize - 2;14: Destination->Buffer = OutputBuffer;15: 16: return STATUS_SUCCESS;17: }


整数溢出发生在第2行,而且如果 SourceLength等于或大于0x2AAB,则第3行的 NonPagedPool 会不当地分配一个小的缓冲区。之后,第5-10行的二进制转换十六进制的循环通过 65536 字节的倍数将其溢出。


影响 Windows 7 至最新版本


文章指出,已经在最新的 Windows 10 1903 (64位)版本上成功测试了 PoC 源代码。但研究员认为该漏洞至少在 Windows 7上就已存在。虽然启用 cng.sys 上的 Special Pools 实现崩溃时最容易的,但即使在默认配置下,运行该 exploit 后,64kB 大小内核数据的损坏也会使系统崩溃。

Hawkes 并未提供关于攻击者的详情。不过通常多数0day 遭国家黑客组织或大型网络犯罪组织利用。谷歌指出,该 0day 也得到谷歌另一支安全团队谷歌威胁分析团队(TAG)的证实。谷歌 TAG 的负责人 Shane Huntley 表示这些攻击和美国总统大选活动之间并不存在联系。

Chrome 0day 已在 Chrome 版本 86.0.4240.111 中修复。

这是谷歌第二次披露的 Windows 0day 和 Chrome 0day 一起遭利用的情况。2019年3月,谷歌表示攻击者组合利用 Chrome 0day (CVE-2019-5786)和 Windows 0day (CVE-2019-0808)。



推荐阅读
刚刚修复的Windows 0day和Chrome 0day 已被组合用于 WizardOpium 攻击(详解)




原文链接

https://www.zdnet.com/article/google-discloses-windows-zero-day-exploited-in-the-wild/

https://bugs.chromium.org/p/project-zero/issues/detail?id=2104


题图:Pixabay License


本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。


奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

    觉得不错,就点个 “在看” 吧~



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存